#ifndef MYTCPSOCKET_H
#define MYTCPSOCKET_H

#include <QTcpSocket>

#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>

#include "opedb.h"
#include "protocol.h"

#include <QDebug>
#define qcout qDebug()<<"---------["<<__FILE__ <<":"<< __LINE__<<"]-->"

class MyTcpSocket : public QTcpSocket
{
    Q_OBJECT
public:
    MyTcpSocket();

    QString getName();

signals:
    //用户下线信号, 传递这个socket的地址, 用来删除QList中的socket
    void offline(MyTcpSocket* mysockaddr);//传递的是一个this指针,this指针就代表当前的信号

public slots:
    //获取msg
    void recvMsg();
    //槽函数, 用来处理客户端下线
    void clientOffLine();


    //服务器处理注册请求
    void handleRegist_tcpsocket(const PDU* pdu);

    //用户登录
    void handleLogin_tcpsocket(const PDU* pdu);

    //用户下线
    void handleOffLine_tcpsocket(QString m_name);

    //查看所有在线用户
    void handleAllOnline_tcpsocket(const PDU* pdu);

    //搜索用户
    void handleSearch_tcpsocket(const PDU* pdu);

    //添加好友
    void handleAddFriend_tcpsocket(const PDU* pdu);

    //被邀请的客户端的回复
    void handleAddFriendRequest_tcpsocket(const PDU* pdu);;

private:
    QString m_strName;//用户名字需要和socket对应


};

#endif // MYTCPSOCKET_H
